經過了將近一個月的文章撰寫與探討,我們終於來到了系列文章的尾聲。Rust 是一門強大且有潛力的語言,從語法的基礎,再到進階概念與網頁應用的實現。但是相信對於熟悉 Python 的開發者而言,應該還是沒有辦法透過系列文章的內容學到紮實的 Rust 開發能力,頂多就只是有個概念上的認識而已,所以我們今天要來盤點一下,有哪些可以幫助我們練習 Rust 開發實戰經驗的學習資源呢。
下面整理了一些可以協助我們統整關於 Rust 開發時必學的關鍵概念,每一篇都可以讓我們利用零碎的時間來更熟悉這些技術,並且幫助我們從理解到實作的過程逐步提升 Rust 的開發能力。
Rust 官方學習手冊是一個極為詳細的資源,從入門到進階,循序漸進地引導讀者了解 Rust 語言的設計理念與應用方式。對於熟悉 Python 語言的人來說,這個手冊有助於幫助你熟悉 Rust 的所有權機制、記憶體管理與多線程開發等關鍵概念。無論是基礎語法還是高階應用,都可以透過這個手冊進行系統化的學習。
"半小時學習Rust"這篇文章的好處是,透過具體的片段來說明Rust程式碼的實際編寫需要注意的地方,很適合用零碎的方式來慢慢熟悉Rust開發的方法,也是一篇在有基礎概念之後作為複習專用的入門用文章。
當我們剛開始學習一項程式語言的時候,要我們自己從 0 到 1 撰寫一個程式碼,可能都還沒有辦法直接反射動作寫出來,這個狀態最需要的就是閱讀大量範例,而在Rust當中, Rust by Example
就是一個很好的資源。
這是一個展示 Rust 各種入門或進階功能及用法的網站,它透過具體的例子來說明 Rust 語法和其應用情境。如果你對語法的理解已經有一定的基礎,但想要看到更多實際應用案例,那麼這個網站是很好的參考資源,能夠幫助你從抽象的概念轉變為實際應用的技巧,僅僅是快速閱覽一遍,功力就一定能有所提升。
被社群稱為 "The Book" 的手冊,是學習 Rust 語言的絕佳教材。它深入講解了 Rust 的各個細節,並且附帶許多程式範例,對於想要全面掌握 Rust 的開發者來說,這個手冊不可或缺。特別是當你遇到比較進階的需求,例如系統編程或網絡應用開發時,這本書能夠幫助你全面掌握 Rust 的潛力。
好消息是,也有部分中文版網站唷:
僅僅透過閱讀和理解語法並不足以真正掌握一門程式語言。實作與實戰經驗是關鍵。以下幾個資源可以讓我們通過專案或挑戰來實際練習 Rust 開發,強化實戰能力:
Rustlings 是一個麻省理工學院所開發維護的互動式學習資源,透過練習題幫助開發者理解 Rust 的語法及其特性。它為你提供實際的問題與挑戰,並引導你透過修改程式碼來解決問題,這是一個非常有效的實戰練習資源,特別是對於剛剛接觸 Rust 的 Python 開發者來說,Rustlings 是很好的練習工具。
那怎麼使用呢?首先我們先安裝 rustlings
,先找一個你想要存放練習範例的資料夾,並且在該路徑下直接從終端機輸入安裝指令
cargo install rustlings
安裝完畢之後,接下來輸入初始化的指令
rustlings init
那指定路徑下就會產生一個 rustlings
的資料夾,完成的資料夾檔案結構如下:
- 根目錄/
- .git/
- .vscode/
- exercises/
- solutions/
- .gitignore
- Cargo.toml
接下來如果我們想要開始進行練習,只需要輸入下列指令
cd rustlings
rustlings run
rustlings
就會開啟練習專案,我們就可以開始進行 rust 開發練習了
第一題直接就完成了,如果要下一題開始的話,可以直接點連結開啟下一個練習檔案
將程式碼當中的 printline!("Hello world!");
改成 println!("Hello world!");
並儲存之後,終端機會跳出執行結果,如果成功就會出現進入下一題的訊息,按下 n
跳出下一題,如果沒有看到可以輸入 rustlings
讓程式重新進入監看狀態
按下 h
可以在終端機得到修改提示,按下 l
可以查看自己目前所在的題項
提示:
題庫列表:
馬上來測試看看自己目前的實力吧!
Exercism 是一個提供程式挑戰與社群互動的平台。它的 Rust Track 提供了一系列 Rust 挑戰,從簡單的基礎概念到更具挑戰性的專案,幫助你一步一步提升你的實戰經驗。完成挑戰後,你還可以與全球的 Rust 開發者交流討論,獲得反饋與建議。
當我們進入 Exercism
的首頁,可以用 github
帳號登入,可以到 Practice
裡面找到練習範例,裡面有多項主題的練習範例,支援線上編輯與本機端編輯,所以對於不想要特別安裝測試專案的人來說也相當方便
試著征服這些題目吧!
這是一個由Google 的 Android 團隊負責開發與維護,最棒的是他們還有建立了一個 PDF檔案 來介紹這個課程,課程內容相當豐富,可以看到光是課程PDF內容就有300多頁可以瀏覽,其中又特別包含了 Android
、 Chromium
、 Bare-metal
與 Concurrency
等主題是內容,而且具有中文翻譯可以參考,這也是對於Rust語言學習者珍貴的學習資源。
筆者在這個鐵人賽的過程中,撰寫了28篇文章,從語法入門到實戰應用,目的是幫助 Python 開發者們學習 Rust。這是一趟挑戰自我的旅程,我們一起從基礎開始,逐步深入。為了方便讀者回顧與查找特定主題,以下提供了 28 篇文章的主題與內容摘要表,供大家參考:
天數 | 主題 | 內容摘要 |
---|---|---|
1 | Rust 是什麼?為什麼 Python 開發者應該學習 Rust? | 介紹 Rust 的基本特性及 Python 開發者學習它的理由 |
2 | 安裝與設定 Rust 開發環境:初始步驟 | 引導讀者安裝 Rust 並配置開發環境 |
3 | Rust 語法速覽:與 Python 的基本語法比較 | 比較 Rust 與 Python 的語法差異,概覽基本結構 |
4 | 建構任務管理工具:Rust 變數與資料類別的實戰應用 | 透過實戰範例介紹變數和資料類別在 Rust 中的應用 |
5 | 深入理解所有權與借用:Rust 的記憶體安全之鑰 | 深入解釋所有權與借用在 Rust 中的重要性與實現 |
6 | Rust 的流程控制(if, loop, match):與 Python 的對比 | 探討 Rust 中的控制流與 Python 的差異 |
7 | 函數與方法定義:如何在 Rust 中設計函數 | 說明如何定義和使用函數與方法 |
8 | 結構體與元組:自定義類別 | 介紹如何在 Rust 中使用結構體與元組來定義複合資料 |
9 | Rust 中的枚舉:代碼範例與應用 | 展示 Rust 中的枚舉語法及其應用 |
10 | 錯誤處理:探討 Rust 的 Result 與 Option | 解釋 Rust 的錯誤處理機制,特別是 Result 與 Option |
11 | Rust 的模組與套件管理:如何引用模組 | 介紹模組化與套件管理的實踐方法 |
12 | Cargo:Rust 的建置工具與套件管理器 | 詳述 Cargo 的作用,如何使用它進行專案管理 |
13 | 使用迭代器與集合:Rust 中常見的集合處理 | 討論集合和迭代器的應用,與 Python 的對比 |
14 | Rust 中的模式匹配:match 的進階應用 | 展示如何進階使用 match 進行模式匹配 |
15 | 並行編程:Rust 的 threads 與 async | 探討 Rust 的多執行緒與異步處理 |
16 | 泛型與特徵物件:提升 Rust 代碼的彈性與重用性 | 解釋泛型與特徵物件的應用來提升代碼的彈性 |
17 | 建立你的第一個 Rust CLI 應用程式 | 引導建立 CLI 應用並展示其基本結構 |
18 | Rust 與 WebAssembly:在網頁上使用 Rust | 介紹如何使用 WebAssembly 與 Rust 開發網頁應用 |
19 | Rust 與 React 結合:建立簡單的 Web 應用 | 探討如何將 Rust 和 React 結合來建構全端應用 |
20 | Rust 與 Python 的 FFI 互通操作指南 | 探討如何使用 FFI 實現 Rust 與 Python 的互通 |
21 | 淺談 Rust 巨集(一):自建的程式工廠 | 介紹 Rust 宣告式巨集的概念與實作 |
22 | 淺談 Rust 巨集(二):不再重覆製造輪子 | 介紹 Rust 程序式巨集的概念與實作 |
23 | Rust 的測試框架:單元測試 & 集成測試 | 說明 Rust 測試框架的用法與測試策略 |
24 | Rust 的 Web 應用(一):簡介 Actix 框架 | 簡介 Actix 框架及其在 Web 開發中的應用 |
25 | Rust 的 Web 應用(二):探索 Rocket 框架 | 探討另一個 Web 框架 Rocket 並與 Actix 比較 |
26 | Rust 的 Web 應用(三):使用 Rocket 與 MongoDB 建立 RESTful API | 展示如何結合 Rocket 與 MongoDB 構建 API |
27 | Rust 的 Web 應用(四):Rust + React 全端開發 | 探討如何使用 Rust 與 React 進行全端開發 |
28 | Rust 的 Web 應用(五):React 分頁管理 | 教學如何在 React 中實現分頁管理功能 |
在這個系列文章的最後,我們回顧了學習 Rust 的各種資源,從入門到進階,從理論到實作,這些資源都能夠幫助你一步步提升對 Rust 的理解與應用能力。對於 Python 開發者來說,學習 Rust 或許需要一些時間來適應它的所有權系統、變數定義方式、泛型與特徵、多線程模式等,但這將會是一個非常值得的投資。
如果你想要進一步深化對 Rust 的學習,可以考慮參加開源專案的開發,或者自己創建一些小型專案來練習。Rust 社群非常活躍,參與社群活動、閱讀他人的程式碼,也能讓你更快上手這門語言,就像筆者這次主要也是為了進一步熟悉 Rust 的程式語言而參與此次鐵人賽一樣,雖然內容很多,但是讓自己沉浸在Rust開發的學習過程中,從現階段可理解的部分慢慢開始,總有一天會成為得心應手的Rust開發者的,與大家共勉之!